Shear of an Image

簡短描述

檔案: \examples\Processing\Geometry\ShearLine\LineShear_V02.va

預設平台: mE5-MA-VCL

簡短說明

採用線性插值的線性剪切範例。

在此範例(位於 \examples\Processing\Geometry\ShearLine\LineShear_V02.va)中,實作了適用於線掃描相機的 線性剪切功能。 若相機未沿著物體的預定掃描方向安裝,此設計可補償掃描物體中因此產生的 位移 (參見圖328)。此處以 y 方向上 10 像素的線性位移 (橫跨整個影像寬度,此處為 1024 像素)作為範例。

因相機對準不準確而導致的掃描物件傾斜

圖 328. 因相機對準不準而導致的掃描物件傾斜


在圖329中,您可以看到基本設計結構: 來自攝影師的一維影像中的每個像素,都會根據其 x 座標,在 y 方向上進行剪切,此過程發生於 HierarchicalBox LineShear中,會根據其 x 座標在 y 方向上對相機操作員傳來的 1D 影像中的每個像素進行剪切。透過 SplitImage:2DImage運算子將各條單一線段組合成二維影像。經校正後的影像 透過 DmaToPC 運算子傳送至電腦。

基本設計結構

圖 329. 基本設計結構


在圖330中,您可以看到 HierarchicalBox 的內容 LineShear的內容。 在此,每個像素的先前 N-1 條鄰近線(此處為 31 條)會寫入一個 Nx1 核中。

HierarchicalBox LineShear 的內容

圖 330. HierarchicalBoxLineShear的內容


此欄中的每個 8 位元像素都會與其前方的相鄰像素(透過運算子 KernelRemap:ShiftedKernel運算子所確定的)合併為一個 16 位元畫素。因此請參閱運算子所找出) 合併為一個 16 位元像素。因此,請參閱 HierarchicalBox ExtractInteger 的內容。請參閱 圖331。在 HierarchicalBox Select (參見圖 332)中,每個像素的新像素值皆透過運算子 CASE 運算子,根據偏移(校正)後的整數 y 位置來選取。

HierarchicalBox 的 ExtractInteger 方法內容

圖 331. HierarchicalBox 的ExtractInteger內容


HierarchicalBox 選單的內容

圖 332. HierarchicalBox 的選取內容


每個像素的修正 y 座標是在 HierarchicalBox 中計算得出的 TransformedYCoordinate 中計算(參見圖 329)。此方塊的內容顯示於圖 333 中。

HierarchicalBox 的 TransformedYCoordinate 內容

圖 333. HierarchicalBox 的TransformedYCoordinate內容


使用運算子 Coordinate_X 可取得每個像素的 x 座標。針對負傾斜的斜率,可「反轉」其 x 座標 (透過運算子 常數:負斜率 及 IF)進行選取。透過運算子 CONST: DeltaX 運算子定義了相機的 偏移量:此常數決定每移動多少像素後,會在 y 方向進行一像素的偏移。透過運算子 SelectBitField: Integer 及 SelectBitField: Fractional 運算子,會將每個像素經校正後的 y 座標之整數部分與小數部分分離。在此範例中,6 個小數 位元 (參見運算子 ShiftLeft:Mult64) 所確定的 6 位小數 位元 。每個 y 座標的小數部分,對於在 HierachicalBox Interpolation中進行的線性插值所必需,該函式位於 ExtractFractional 方塊中(參見圖330)。 有關插值演算法的詳細資訊,請參閱 HierarchicalBox Interpolation 中的註解中,可找到關於插值演算法的詳細資訊。 在圖334中,您可以看到經過上述操作處理後,已修正的影像。

經位移校正的影像

圖 334. 經位移校正的影像